import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 给你一个字符串表达式 s ，请你实现一个基本计算器来计算并返回它的值。
 * <p>
 * 整数除法仅保留整数部分。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "3+2*2"
 * 输出：7
 * 示例 2：
 * <p>
 * 输入：s = " 3/2 "
 * 输出：1
 * 示例 3：
 * <p>
 * 输入：s = " 3+5 / 2 "
 * 输出：5
 *  
 * <p>
 * 提示：
 * <p>
 * 1 <= s.length <= 3 * 105
 * s 由整数和算符 ('+', '-', '*', '/') 组成，中间由一些空格隔开
 * s 表示一个 有效表达式
 * 表达式中的所有整数都是非负整数，且在范围 [0, 231 - 1] 内
 * 题目数据保证答案是一个 32-bit 整数
 */
class Solution {

    public static void main(String[] args) {
        System.out.println(calculate("3+2*2"));
        System.out.println(calculate("3/2"));
        System.out.println(calculate("3+5 / 2"));
    }

    public static int calculate(String s) {
        return calculate(s.toCharArray(), 0);
    }

    public static int calculate(char[] chars, int p) {
        // 读取全部信息
        List<Integer> nums = new ArrayList<>();
        List<Character> dos = new ArrayList<>();
        int num = 0;
        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            if ('0' <= c && c <= '9') {
                num *= 10;
                num += c - '0';
            } else if (c != ' ') {
                nums.add(num);
                dos.add(c);
                num = 0;
            }
        }
        nums.add(num);
        int sum = 0;
        Iterator<Integer> iterator = nums.iterator();
        int tmp = iterator.next();
        boolean plus = true;
        for (Character d : dos) {
            if (d == '+' || d == '-') {
                if (plus) {
                    sum += tmp;
                } else {
                    sum -= tmp;
                }
                tmp = iterator.next();
                plus = d == '+';
            } else if (d == '*') {
                tmp *= iterator.next();
            } else if (d == '/') {
                tmp /= iterator.next();
            }
        }
        if (plus) {
            sum += tmp;
        } else {
            sum -= tmp;
        }
        return sum;
    }


}